package com.softer.wxzj.mapper;

import com.softer.wxzj.entity.BaseBuildView;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

@Repository
public interface BaseBuildViewMapper {
    int getJCCountByHouseId(String houseId);

    /**
     * 第一层  根据自然幢id查询 户数、房屋面积、总余额
     *
     * @param id
     * @return
     */
    BaseBuildView getBuildAndFundById(String id);

    /**
     * 第二层 根据自然幢id 查询 楼层类型、最大楼层、最小楼层
     *
     * @param buildNo
     * @return
     */
    List<BaseBuildView.Build> getBuildByBuildNo(String buildNo);

    /**
     * 第三层  根据自然幢id和楼层类型查询单元信息
     *
     * @param buildNo
     * @param cellType
     * @return
     */
    List<BaseBuildView.Build.Cell> getCellByBuildNoAndCellType(@Param("buildNo") String buildNo, @Param("cellType") String cellType);

    /**
     * 第四层  根据单元id查询楼层号
     *
     * @param cellNo
     * @return
     */
    List<BaseBuildView.Build.Cell.Floor> getFloorByCellNo(String cellNo);

    /**
     * 单元总公面积
     *
     * @param cellNo
     * @return
     */
    BigDecimal selectAllStru(String cellNo);

    /**
     * 所有房屋户数
     *
     * @param cellNo
     * @return
     */
    int selectAllHouse(String cellNo);
    /**
     * 未交村户数
     *
     * @param cellNo
     * @return
     */
    int selectNotDue(String cellNo);

    /**
     * 第五层  根据楼层号和单元号查询房屋列表
     *
     * @param cellNo
     * @param floorNo
     * @return
     */
    List<BaseBuildView.Build.Cell.Floor.House> getHouseByCellNoAndFloorNo(@Param("cellNo") String cellNo, @Param("floorNo") String floorNo);

    /**
     * 第六层 根据房屋id房屋详情   鼠标悬浮使用
     *
     * @param id
     * @return
     */
    BaseBuildView.Build.Cell.Floor.House.HouseInfo getHouseInfoById(String id);

    /**
     * 根据状态查询房屋数量
     *
     * @param state
     * @param dueState
     * @return
     */
    Map<String, Long> getHouseCountByStateOrDueState(@Param("state") String state, @Param("dueState") String dueState);

    /**
     * 根据regionNo查询小区名
     *
     * @param regionNo
     * @return
     */
    String getRegionNameByRegionNo(String regionNo);

    /**
     * 根据房屋id查询自然幢名、id
     *
     * @param regionNo
     * @return
     */
    List<Map<String, String>> getBuildNameListByRegionNo(String regionNo);

    /**
     * 根据楼栋id查询总条数   按房屋状态分组
     *
     * @param buildNo
     * @return
     */
    List<Map<String, Object>> getHouseCountGroupByDueState(String buildNo);

    /**
     * 根据regionNo查询小区名和小区编号
     *
     * @param regionNo
     * @return
     */
    Map<String, String> getRegionNameAndRegionNoByRegionNo(String regionNo);

    /**
     * 根据楼栋id查询总条数   缴存审核状态分组
     *
     * @param buildNo
     * @return
     */
    List<Map<String, Object>> getHouseCountGroupByDueApplyState(String buildNo);

    /**
     * 根据楼栋id查询总条数   按缴存状态分组
     *
     * @param buildNo
     * @return
     */
    List<Map<String, Object>> getHouseCountGroupByState(String buildNo);

    /**
     * 根据id查询房屋信息，用在视图房屋维护页面
     *
     * @param id
     * @return
     */
    Map<String, Object> getHouseInfoDetailByHouseId(String id);

    /**
     * 根据房屋idid查询业主信息，用在视图房屋维护页面
     *
     * @param id
     * @return
     */
    List<Map<String, Object>> getOwnerInfoByHouseId(String id);

    int countdyHouseAreaIsNullSum(@Param("id") String id, @Param("sys") String sys);

    BaseBuildView.Build.Cell.Floor selectByFloorAndCellType(@Param("buildNo") String buildNo, @Param("type") String type, @Param("floorNo") String floorNo);

    int selectNotDueByFloorAndCellType(@Param("buildNo") String buildNo, @Param("type") String type, @Param("floorNo") String floorNo);

    /**
     * 未交村
     * @param id
     * @return
     */
    int selectOverdueCount(String id);

    /**
     * 足额(多交)
     * @param id
     * @return
     */
    int selectQuotaCount(String id);

    int selectNotDueByCell(String cellNo);
}